/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.manager;


import com.brain.core.common.UtilCore;
import com.brain.core.dto.EmpresaDto;
import com.brain.core.dto.UbigeoDto;
import com.brain.core.exception.DAOException;
import com.brain.core.hibernate.dao.DAOGenerico;
import com.brain.core.manager.ComunManager;
import com.brain.core.manager.OrganizacionManager;
import com.brain.core.manager.RecursosManager;
import com.brain.core.dto.EmpresaUbigeoDto;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;

/**
 *
 * @author Indra
 */
@Service
public class EmpresaUbigeoManager extends ComunManager<EmpresaUbigeoDto>  implements Serializable {
    
    private static Logger logger = Logger.getLogger(OrganizacionManager.class);
    private Long idEntidad = 125L;
    @Resource
    private DAOGenerico<EmpresaUbigeoDto> springHibernateDao;
    @Resource
    private RecursosManager recursosManager;
    /**
     * Retorna todos los permisos
     * @return Lista de Permisos
     * @throws DAOException 
     */
    public List<EmpresaUbigeoDto> obtenerTodos() throws DAOException {        
        return springHibernateDao.listarTodosDtos(EmpresaUbigeoDto.class);
    }
    
    public List<EmpresaUbigeoDto> obtenerTodosPorEmpresa(EmpresaDto empresaDto) throws DAOException{
            List<Object> listaParametros = new ArrayList<Object>();
            String hqsql = "select o from EmpresaUbigeoDto as o where ";
            hqsql += " o.empresaDto.id = ? ";
            listaParametros.add(empresaDto.getId());
            
            return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }    
        
  
    /**
     * Retorna un permiso por su Id
     * @param id Id Permiso
     * @return Permiso
     * @throws DAOException 
     */
    public EmpresaUbigeoDto obtenerPorId(Long id) throws DAOException {
       return springHibernateDao.obtenerDtoPorId(EmpresaUbigeoDto.class, id);
    }   

    public void agregarEliminarEmpresaUbigeo(UbigeoDto UbigeoDto, EmpresaDto EmpDto) throws DAOException{
        String mensajeTrx = "";
        if(!UbigeoDto.getId().equals(0L)){
                int verificarExistencia=0;
                List<EmpresaUbigeoDto> listaEmpUbg = new ArrayList<EmpresaUbigeoDto>();
                listaEmpUbg = this.obtenerTodosPorEmpresaUbigeo(UbigeoDto,EmpDto);
                verificarExistencia = listaEmpUbg.size();

                if(verificarExistencia==0){

                    EmpresaUbigeoDto empUbgDto = new EmpresaUbigeoDto();
                    empUbgDto.setEmpresaDto(EmpDto);
                    empUbgDto.setUbigeoDto(UbigeoDto);
                    this.nuevo(empUbgDto);
                }else{

                    EmpresaUbigeoDto EmpubgDtoelim= new EmpresaUbigeoDto();
                    EmpubgDtoelim=listaEmpUbg.get(0);
                    this.eliminar(EmpubgDtoelim);
                }
           }else{
            mensajeTrx = UtilCore.Internacionalizacion.getMensajeInternacional("form.general.mensaje.empresa.ubigeo.tipo.pais.error");
            recursosManager.showMessage(mensajeTrx);
           } 
    
    }
    
    public List<EmpresaUbigeoDto> obtenerTodosPorEmpresaUbigeo(UbigeoDto ubigeoDto, EmpresaDto empresaDto) throws DAOException{
            List<Object> listaParametros = new ArrayList<Object>();
            String hqsql = "select o from EmpresaUbigeoDto as o where ";
            hqsql += " o.empresaDto.id = ? ";
            listaParametros.add(empresaDto.getId());
            hqsql += " and (o.ubigeoDto.id = ? )";
            listaParametros.add(ubigeoDto.getId());
            
            return springHibernateDao.ejecutarQuery(hqsql, listaParametros);
    }  
    
    
}
